package com.ethink.warehouse.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.info.MateInventoryOtherInLogInfo;
import com.ethink.warehouse.api.info.MateInventoryOtherInLogModeInfo;
import com.ethink.warehouse.api.request.MateInventoryOtherInLogAddRequest;
import com.ethink.warehouse.api.request.MateInventoryOtherInLogQueryRequest;
import com.ethink.warehouse.api.request.MateInventoryOtherInLogUpdateRequest;
import com.ethink.warehouse.api.response.MateInventoryOtherInLogAddResponse;
import com.ethink.warehouse.api.response.MateInventoryOtherInLogDetailResponse;
import com.ethink.warehouse.api.response.MateInventoryOtherInLogUpdateResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * 其他入库 Facade接口
 *
 * @author default
 * @date 2023-02-09
 */
@FeignClient(name = "ethink-warehouse-service", path = "warehouse-service/facade/v1/mateInventoryOtherInLog", contextId = "mateInventoryOtherInLogFacade")
public interface MateInventoryOtherInLogFacade {

    @PostMapping("/queryMateInventoryOtherInLog")
    @ResponseBody
    Page<MateInventoryOtherInLogInfo> queryMateInventoryOtherInLog(@RequestBody MateInventoryOtherInLogQueryRequest request);

    @PostMapping("/getMateInventoryOtherInLogById")
    @ResponseBody
    MateInventoryOtherInLogDetailResponse getMateInventoryOtherInLogById(@RequestParam("mateInventoryOtherInLogId") Long mateInventoryOtherInLogId);

    @PostMapping("/listMateInventoryOtherInLog")
    @ResponseBody
    List<MateInventoryOtherInLogInfo> listMateInventoryOtherInLog(@RequestBody MateInventoryOtherInLogQueryRequest request);

    @PostMapping("/addMateInventoryOtherInLog")
    @ResponseBody
    MateInventoryOtherInLogAddResponse addMateInventoryOtherInLog(@RequestBody MateInventoryOtherInLogAddRequest request);

    @PostMapping("/updateMateInventoryOtherInLog")
    @ResponseBody
    MateInventoryOtherInLogUpdateResponse updateMateInventoryOtherInLog(@RequestBody MateInventoryOtherInLogUpdateRequest request);

    @PostMapping("/deleteMateInventoryOtherInLog")
    @ResponseBody
    Boolean deleteMateInventoryOtherInLog(@RequestParam("mateInventoryOtherInLogId") Long mateInventoryOtherInLogId);

    @PostMapping("/mateInventoryOtherInLogPass")
    @ResponseBody
    Boolean mateInventoryOtherInLogPass(@RequestParam("mateInventoryOtherInLogId") Long mateInventoryOtherInLogId);

    @PostMapping("/mateInventoryOtherInLogRefuse")
    @ResponseBody
    Boolean mateInventoryOtherInLogRefuse(@RequestParam("mateInventoryOtherInLogId") Long mateInventoryOtherInLogId);

    @PostMapping("/queryMateInventoryOtherInLogMode")
    @ResponseBody
    Page<MateInventoryOtherInLogModeInfo> queryMateInventoryOtherInLogMode(@RequestBody MateInventoryOtherInLogQueryRequest request);

}